home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Pascal Super Library
/
Pascal Super Library (CW International)(1997).bin
/
BORL_TIP
/
TI2000
/
TI2593.ASC
< prev
next >
Wrap
Text File
|
1994-09-19
|
4KB
|
180 lines
PRODUCT : Pascal NUMBER : 2593
VERSION : All
OS : Windows
DATE : August 10, 1994 PAGE : 1/3
TITLE : Enabling a horizontal scroll bar for a list box.
program HorizontalListBox;
uses
WinTypes, WinProcs, OWindows, ODialogs, Strings;
const
id_ListBox1 = 101;
type
ListBoxApp = Object (TApplication)
procedure InitMainWindow; Virtual;
end;
PHListBox = ^THListBox;
THListBox = object(TListBox)
procedure SetupWindow; virtual;
end;
PMainWindow = ^TMainWindow;
TMainWindow = Object(TWindow)
ListBox1: PHListBox;
constructor Init(AParent: PWindowsObject; ATitle: PChar);
procedure SetupWindow; virtual;
end;
procedure TMainWindow.SetupWindow;
var
dc: Hdc;
StringLength, Count, I: Byte;
Tmp, StringSize: LongInt;
lbString: PChar;
begin
inherited SetupWindow;
dc := GetDC(hWindow);
StringLength := 0;
{Add strings to the list box.}
ListBox1^.AddString('This is line 1');
PRODUCT : Pascal NUMBER : 2593
VERSION : All
OS : Windows
DATE : August 10, 1994 PAGE : 2/3
TITLE : Enabling a horizontal scroll bar for a list box.
ListBox1^.AddString('This is line 2, which is really long');
ListBox1^.AddString('This is line 3');
ListBox1^.AddString('This is line 4');
ListBox1^.AddString('This is line 5');
ListBox1^.AddString('This is line 6');
ListBox1^.AddString('This is line 7');
ListBox1^.AddString('This is line 8');
ListBox1^.AddString('This is line 9');
{Count the number of strings inside the list box.}
Count := ListBox1^.GetCount;
if Count > 0 then
begin
GetMem(lbString, 255);
{Look at each string in the list box and determine
the size of the largest one.}
for I := 0 to Count - 1 do
begin
StringSize := ListBox1^.GetString(lbString, I);
if StringSize <= 0 then
begin
MessageBox(HWindow, 'An error occured extracting string',
'ERROR',mb_Ok or mb_IconExclamation);
Break;
end
else
begin
{The lo word return from GetTextExtent holds the width
in pixels of the string.}
Tmp := loWord(GetTextExtent(dc, lbString, StringSize));
if Tmp > StringLength then
StringLength := Tmp;
end;
end;
FreeMem(lbString, 255);
{Add one upper case character length to the total length of
the largest string length . This allows the list box to
scroll just beyond the last character in the larges string.}
inc(StringLength, LoWord(GetTextExtent(dc, 'X', 1)));
PRODUCT : Pascal NUMBER : 2593
VERSION : All
OS : Windows
DATE : August 10, 1994 PAGE : 3/3
TITLE : Enabling a horizontal scroll bar for a list box.
{Send a lb_SetHorizontalExtent to the list box.}
SendMessage(ListBox1^.HWindow, lb_SetHorizontalExtent,
StringLength, 0);
end
else
MessageBox(HWindow, 'An error occured. The list box
has no strings in it.','ERROR', mb_Ok or mb_IconExclamation);
ReleaseDC(hWindow, dc);
end;
procedure THListBox.SetupWindow;
begin
inherited SetupWindow;
Attr.Style := Attr.Style or WS_HSCROLL;
end;
constructor TMainWindow.Init (AParent: PWindowsObject; ATitle: PChar);
begin
Inherited Init (AParent, ATitle);
ListBox1 := New(PHListBox, Init(@Self, id_ListBox1,
15, 15, 120, 100));
end;
procedure ListBoxApp.InitMainWindow;
begin
MainWindow := New(PMainWindow, Init(nil,
'Example of a Horizontal Scrolling List Box'));
end;
var
MyApplication: ListBoxApp;
begin
MyApplication.Init('Min');
MyApplication.Run;
MyApplication.Done;
end.
DISCLAIMER: You have the right to use this technical information
subject to the terms of the No-Nonsense License Statement that
you received with the Borland product to which this information
pertains.